clear; clc; close all;

%% 固定参数设置
a0 = -0.895;
a1 = 0.83;
a2 = 0.14;
b2 = 1;
d1 = 0;
d2 = 0;
b1 = 0.1;   % 固定 b1

% 扫描参数 b0 的取值范围（例如：-3 到 3）
b0_values = linspace(-3, 3, 501);
num_b0 = length(b0_values);

%% 迭代设置
N_total = 1000;       % 总迭代步数
N_trans = 100;        % 舍弃瞬态步数
sample_interval = 10; % 分叉图采样间隔

%% 用于存储每个 b0 下的李指数数据
LE_all = zeros(num_b0, 3);

%% 用于存储分叉图数据（记录 b0 与对应采样时刻的 y 值）
b0_bif = [];
y_bif = [];

%% 循环遍历不同的 b0 值
for i = 1:num_b0
    current_b0 = b0_values(i);
    
    % 1. 调用封装函数 LEs 计算当前 b0 下的三个李指数
    %    这里初始状态设为 (0.1, 0.1, 0.1)
    LE = LEs(a0, a1, a2, current_b0, b1, b2, d1, d2, 0.1, 0.1, 0.1, N_total, N_trans);
    LE_all(i,:) = LE;
    
    % 2. 计算分叉图数据：重新从初始条件迭代一次，
    %    舍弃瞬态后，每隔 sample_interval 记录一次 y 值。
    x = 0.1; 
    y = 0.1; 
    z = 0.1;
    
    % 舍弃瞬态迭代（不记录数据）
    for n = 1:N_trans
        [x, y, z] = vl_dmsin(a0, a1, a2, current_b0, b1, b2, d1, d2, x, y, z);
    end
    
    % 记录舍弃瞬态后的数据
    for n = 1:(N_total - N_trans)
        [x, y, z] = vl_dmsin(a0, a1, a2, current_b0, b1, b2, d1, d2, x, y, z);
        if mod(n, sample_interval) == 0
            % 这里记录 y 值（分叉图用 y vs. b0）
            bif_x_val = y;  % 如果你希望绘制的是 y 分叉图
            b0_bif = [b0_bif, current_b0];
            y_bif = [y_bif, bif_x_val];
        end
    end
    
    fprintf('Progress: %.1f%%\n', 100 * i / num_b0);
end

%% 绘制图形：上图为李指数图，下图为分叉图
figure('Color',[1 1 1],'Position',[100,100,900,700]);

% 子图 (a)：李指数图
subplot(2,1,1);
hold on; grid on;
plot(b0_values, LE_all(:,1), 'r-', 'LineWidth', 1, 'DisplayName','LE_1');
plot(b0_values, LE_all(:,2), 'b-', 'LineWidth', 1, 'DisplayName','LE_2');
plot(b0_values, LE_all(:,3), 'g-', 'LineWidth', 1, 'DisplayName','LE_3');
plot(b0_values, zeros(size(b0_values)), 'k--', 'LineWidth', 1, 'DisplayName','0');
hold off;
xlabel('b_0','FontSize',12);
ylabel('李指数','FontSize',12);
title('图9 (上)：李指数 vs. b_0','FontSize',14);
legend('Location','best');

% 子图 (c)：分叉图（记录的是 y vs. b0 的散点图）
subplot(2,1,2);
plot(b0_bif, y_bif, 'r.', 'MarkerSize', 1);
xlabel('b_0','FontSize',12);
ylabel('y','FontSize',12);
title('图9 (下)：分岔图 (y vs. b_0)','FontSize',14);
grid on;
